package businessLogic.service;

import dao.AlumnoDAO;
import entity.Alumno;
import java.util.List;
import javax.persistence.EntityManager;
import vo.AlumnoVO;
import vo.IValueObject;

/**
 *
 * @author Alexander
 */
public class AlumnoService implements IService {

    @Override
    public void persist(IValueObject vo, EntityManager em) {
        Alumno entity = new Alumno();
        entity.setUsername(((AlumnoVO) vo).getUsername());
        entity.setNombre(((AlumnoVO) vo).getNombre());
        entity.setApellido(((AlumnoVO) vo).getApellido());
        entity.setPassword(((AlumnoVO) vo).getPassword());
        entity.setCarrera(((AlumnoVO) vo).getCarrera());
        entity.setFechaDeNacimiento(((AlumnoVO) vo).getFechaDeNacimiento());
        entity.setUsuarioActivo(((AlumnoVO) vo).getUsuarioActivo());
        
        //TODO
        //entity.setAgenda();
        //entity.setBilletera();
        //entity.setCalendario();
                
        new AlumnoDAO().persist(entity, em);
    }

    @Override
    public IValueObject find(Object id, EntityManager em) {
        return new AlumnoDAO().find(id, em);
    }

    @Override
    public void update(IValueObject vo, EntityManager em) {
        Alumno entity = new Alumno();
        entity.setUsername(((AlumnoVO) vo).getUsername());
        entity.setNombre(((AlumnoVO) vo).getNombre());
        entity.setApellido(((AlumnoVO) vo).getApellido());
        entity.setPassword(((AlumnoVO) vo).getPassword());
        entity.setCarrera(((AlumnoVO) vo).getCarrera());
        entity.setFechaDeNacimiento(((AlumnoVO) vo).getFechaDeNacimiento());
        entity.setUsuarioActivo(((AlumnoVO) vo).getUsuarioActivo());

        new AlumnoDAO().update(entity, em);

    }
    
    public Alumno login (AlumnoVO vo, EntityManager em){
        Alumno entity = new Alumno();
        entity.setUsername(vo.getUsername());
        entity.setPassword(vo.getPassword());
        
        return new AlumnoDAO().login(entity, em);
    }

    @Override
    public void delete(Object id, EntityManager em) {
        new AlumnoDAO().delete(id, em);
    }
    
    /**
     * Ejecuta la operacion de busqueda del usuario basandose en la IP
     * @param ip Ip del usuario buscado
     * @param em Comtrolador de transacciones
     * @return El usuario buscado
     */
    public IValueObject FindByIp(Object ip, EntityManager em){
        return new AlumnoDAO().FindByIP(ip, em);
    }

    @Override
    public List<IValueObject> getList(EntityManager em) {
        return new AlumnoDAO().getList(em);
    }
}
